package options

import (
	"github.com/spf13/pflag"
)

// 这里放的是options配置类的接口，实现了相关的接口，就能进行默认的命令添加

// CliOptions 具体的配置项实现的接口，CliConfigOptions会调用CliOptions来进行命令的分组
type CliOptions interface {
	AddFlags(fs *pflag.FlagSet) // 生成一个被 pflag 封装后的日志对象
	Validate() error            // 添加你想要的验证函数
}

// ConfigurableOptions abstracts configuration options for reading parameters
// from a configuration file.
type ConfigurableOptions interface {
	// ApplyFlags parsing parameters from the command line or configuration file
	// to the options instance.
	ApplyFlags() []error
}

// CompletableOptions abstracts options which can be completed.
type CompletableOptions interface {
	Complete() error
}

// PrintableOptions abstracts options which can be printed.
type PrintableOptions interface {
	String() string
}
